home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
vol_400
/
429_01
/
chess12
/
charui.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1994-03-30
|
1KB
|
84 lines
#include <dos.h>
#include "misc.hpp"
#include "brdsize.hpp"
#include "charui.hpp"
CHARUSERIFACE CharUI;
CHARUSERIFACE::CHARUSERIFACE(void)
{
union REGS r;
// get cursor mode
r.h.ah = 3;
r.h.bh = 0;
int86(0x10, &r, &r);
cursorMode = r.x.cx;
// clear screen
r.h.ah = 0;
r.h.al = 3;
int86(0x10, &r, &r);
// clear cursor
r.h.ah = 1;
r.h.ch = 0x20;
r.h.cl = 0;
int86(0x10, &r, &r);
return;
}
CHARUSERIFACE::~CHARUSERIFACE(void)
{
union REGS r;
// clear screen
r.h.ah = 0;
r.h.al = 3;
int86(0x10, &r, &r);
// restore cursor mode
r.h.ah = 1;
r.x.cx = cursorMode;
int86(0x10, &r, &r);
cursorMode = r.x.cx;
return;
}
void CHARUSERIFACE::showChar(int row, int col, char c, BOOL inverse)
{
union REGS r;
// position cursor
r.h.ah = 2;
r.h.bh = 0;
r.h.dh = (unsigned char) row;
r.h.dl = (unsigned char) col;
int86(0x10, &r, &r);
// write character
r.h.ah = 9;
r.h.bh = 0;
r.x.cx = 1;
r.h.al = (unsigned char) c;
r.h.bl = (unsigned char) (inverse ? 0x70 : 0x07);
int86(0x10, &r, &r);
return;
}
uint CHARUSERIFACE::readKey(void)
{
union REGS r;
// read a key
r.h.ah = 0;
int86(0x16, &r, &r);
if (r.h.al)
r.h.ah = 0;
return(r.x.ax);
}